home *** CD-ROM | disk | FTP | other *** search
- package javax.swing;
-
- import java.awt.Component;
- import java.awt.Container;
- import java.awt.Dimension;
- import java.awt.Point;
- import java.awt.Toolkit;
- import java.awt.event.InputEvent;
- import java.awt.event.KeyEvent;
- import java.beans.PropertyChangeListener;
- import java.io.IOException;
- import java.io.ObjectOutputStream;
- import java.util.Enumeration;
- import java.util.Hashtable;
- import java.util.Vector;
- import javax.accessibility.Accessible;
- import javax.accessibility.AccessibleContext;
- import javax.accessibility.AccessibleState;
- import javax.swing.event.ChangeListener;
- import javax.swing.event.MenuEvent;
- import javax.swing.event.MenuListener;
- import javax.swing.plaf.MenuItemUI;
- import javax.swing.plaf.PopupMenuUI;
-
- public class JMenu extends JMenuItem implements Accessible, MenuElement {
- private static final String uiClassID = "MenuUI";
- private JPopupMenu popupMenu;
- private ChangeListener menuChangeListener;
- private MenuEvent menuEvent;
- private static Hashtable listenerRegistry = null;
- private int delay;
- protected WinListener popupListener;
- // $FF: synthetic field
- static Class class$javax$swing$event$MenuListener;
-
- public JMenu() {
- this("");
- }
-
- public JMenu(String var1) {
- super(var1);
- this.menuChangeListener = null;
- this.menuEvent = null;
- }
-
- public JMenu(String var1, boolean var2) {
- this(var1);
- }
-
- // $FF: synthetic method
- static MenuElement[] access$0(JMenu var0, JMenu var1) {
- return var0.buildMenuElementArray(var1);
- }
-
- public Component add(Component var1) {
- if (var1 instanceof JComponent) {
- AccessibleContext var2 = ((JComponent)var1).getAccessibleContext();
- if (var2 != null) {
- var2.setAccessibleParent(this);
- }
- }
-
- this.ensurePopupMenuCreated();
- this.popupMenu.add(var1);
- return var1;
- }
-
- public JMenuItem add(String var1) {
- return this.add(new JMenuItem(var1));
- }
-
- public JMenuItem add(Action var1) {
- JMenuItem var2 = new JMenuItem((String)var1.getValue("Name"), (Icon)var1.getValue("SmallIcon"));
- ((AbstractButton)var2).setHorizontalTextPosition(4);
- ((AbstractButton)var2).setVerticalTextPosition(0);
- var2.setEnabled(var1.isEnabled());
- ((AbstractButton)var2).addActionListener(var1);
- this.add(var2);
- this.registerMenuItemForAction(var2, var1);
- return var2;
- }
-
- public JMenuItem add(JMenuItem var1) {
- AccessibleContext var2 = var1.getAccessibleContext();
- var2.setAccessibleParent(this);
- this.ensurePopupMenuCreated();
- return this.popupMenu.add(var1);
- }
-
- public void addMenuListener(MenuListener var1) {
- super.listenerList.add(class$javax$swing$event$MenuListener != null ? class$javax$swing$event$MenuListener : (class$javax$swing$event$MenuListener = class$("javax.swing.event.MenuListener")), var1);
- }
-
- public void addSeparator() {
- this.ensurePopupMenuCreated();
- this.popupMenu.addSeparator();
- }
-
- private MenuElement[] buildMenuElementArray(JMenu var1) {
- Vector var2 = new Vector();
- Object var3 = var1.getPopupMenu();
-
- while(true) {
- while(!(var3 instanceof JPopupMenu)) {
- if (var3 instanceof JMenu) {
- JMenu var5 = (JMenu)var3;
- var2.insertElementAt(var5, 0);
- var3 = ((Component)var5).getParent();
- } else if (var3 instanceof JMenuBar) {
- JMenuBar var6 = (JMenuBar)var3;
- var2.insertElementAt(var6, 0);
- MenuElement[] var7 = new MenuElement[var2.size()];
- var2.copyInto(var7);
- return var7;
- }
- }
-
- JPopupMenu var4 = (JPopupMenu)var3;
- var2.insertElementAt(var4, 0);
- var3 = var4.getInvoker();
- }
- }
-
- // $FF: synthetic method
- static Class class$(String var0) {
- try {
- return Class.forName(var0);
- } catch (ClassNotFoundException var2) {
- throw new NoClassDefFoundError(((Throwable)var2).getMessage());
- }
- }
-
- private void clearListenerRegistry() {
- if (listenerRegistry != null) {
- Enumeration var1 = listenerRegistry.keys();
-
- while(var1.hasMoreElements()) {
- Object var2 = var1.nextElement();
- if (var2 == this) {
- JMenuItem var3 = (JMenuItem)var2;
- ActionChangedListener var4 = (ActionChangedListener)listenerRegistry.get(var3);
- if (var4 != null) {
- Action var5 = (Action)listenerRegistry.get(var4);
- if (var5 != null) {
- ((AbstractButton)var3).removeActionListener(var5);
- var5.removePropertyChangeListener(var4);
- }
-
- var4.setTarget((JMenuItem)null);
- }
- }
- }
-
- listenerRegistry.clear();
- }
-
- }
-
- protected PropertyChangeListener createActionChangeListener(JMenuItem var1) {
- return new ActionChangedListener(this, var1);
- }
-
- private ChangeListener createMenuChangeListener() {
- return new MenuChangeListener(this);
- }
-
- protected WinListener createWinListener(JPopupMenu var1) {
- return new WinListener(this, var1);
- }
-
- public void doClick(int var1) {
- MenuElement[] var2 = this.buildMenuElementArray(this);
- MenuSelectionManager.defaultManager().setSelectedPath(var2);
- }
-
- private void ensurePopupMenuCreated() {
- if (this.popupMenu == null) {
- this.popupMenu = new JPopupMenu();
- this.popupMenu.setInvoker(this);
- this.popupListener = this.createWinListener(this.popupMenu);
- this.popupMenu.addPopupMenuListener(new 1(this));
- }
-
- }
-
- protected void fireMenuCanceled() {
- Object[] var1 = super.listenerList.getListenerList();
-
- for(int var2 = var1.length - 2; var2 >= 0; var2 -= 2) {
- if (var1[var2] == (class$javax$swing$event$MenuListener != null ? class$javax$swing$event$MenuListener : (class$javax$swing$event$MenuListener = class$("javax.swing.event.MenuListener")))) {
- if (var1[var2 + 1] == null) {
- throw new Error(((AbstractButton)this).getText() + " has a NULL Listener!! " + var2);
- }
-
- if (this.menuEvent == null) {
- this.menuEvent = new MenuEvent(this);
- }
-
- ((MenuListener)var1[var2 + 1]).menuCanceled(this.menuEvent);
- }
- }
-
- }
-
- protected void fireMenuDeselected() {
- Object[] var1 = super.listenerList.getListenerList();
-
- for(int var2 = var1.length - 2; var2 >= 0; var2 -= 2) {
- if (var1[var2] == (class$javax$swing$event$MenuListener != null ? class$javax$swing$event$MenuListener : (class$javax$swing$event$MenuListener = class$("javax.swing.event.MenuListener")))) {
- if (var1[var2 + 1] == null) {
- throw new Error(((AbstractButton)this).getText() + " has a NULL Listener!! " + var2);
- }
-
- if (this.menuEvent == null) {
- this.menuEvent = new MenuEvent(this);
- }
-
- ((MenuListener)var1[var2 + 1]).menuDeselected(this.menuEvent);
- }
- }
-
- }
-
- protected void fireMenuSelected() {
- Object[] var1 = super.listenerList.getListenerList();
-
- for(int var2 = var1.length - 2; var2 >= 0; var2 -= 2) {
- if (var1[var2] == (class$javax$swing$event$MenuListener != null ? class$javax$swing$event$MenuListener : (class$javax$swing$event$MenuListener = class$("javax.swing.event.MenuListener")))) {
- if (var1[var2 + 1] == null) {
- throw new Error(((AbstractButton)this).getText() + " has a NULL Listener!! " + var2);
- }
-
- if (this.menuEvent == null) {
- this.menuEvent = new MenuEvent(this);
- }
-
- ((MenuListener)var1[var2 + 1]).menuSelected(this.menuEvent);
- }
- }
-
- }
-
- public AccessibleContext getAccessibleContext() {
- if (super.accessibleContext == null) {
- super.accessibleContext = new AccessibleJMenu(this);
- }
-
- return super.accessibleContext;
- }
-
- public Component getComponent() {
- return this;
- }
-
- public int getDelay() {
- return this.delay;
- }
-
- public JMenuItem getItem(int var1) {
- if (var1 < 0) {
- throw new IllegalArgumentException("index less than zero.");
- } else {
- Component var2 = this.getMenuComponent(var1);
- if (var2 instanceof JMenuItem) {
- JMenuItem var3 = (JMenuItem)var2;
- return var3;
- } else {
- return null;
- }
- }
- }
-
- public int getItemCount() {
- return this.getMenuComponentCount();
- }
-
- public Component getMenuComponent(int var1) {
- return this.popupMenu != null ? this.popupMenu.getComponent(var1) : null;
- }
-
- public int getMenuComponentCount() {
- int var1 = 0;
- if (this.popupMenu != null) {
- var1 = this.popupMenu.getComponentCount();
- }
-
- return var1;
- }
-
- public Component[] getMenuComponents() {
- return this.popupMenu != null ? this.popupMenu.getComponents() : new Component[0];
- }
-
- public JPopupMenu getPopupMenu() {
- this.ensurePopupMenuCreated();
- return this.popupMenu;
- }
-
- private Point getPopupMenuOrigin() {
- int var1 = 0;
- int var2 = 0;
- JPopupMenu var3 = this.getPopupMenu();
- Dimension var4 = Toolkit.getDefaultToolkit().getScreenSize();
- Dimension var5 = ((Component)this).getSize();
- Dimension var6 = ((Component)var3).getSize();
- if (var6.width == 0) {
- var6 = ((JComponent)var3).getPreferredSize();
- }
-
- Point var7 = ((Component)this).getLocationOnScreen();
- Container var8 = ((Component)this).getParent();
- if (var8 instanceof JPopupMenu) {
- if (SwingUtilities.isLeftToRight(this)) {
- if (var7.x + var5.width + var6.width < var4.width) {
- var1 = var5.width;
- } else {
- var1 = -var6.width;
- }
- } else if (var7.x < var6.width) {
- var1 = var5.width;
- } else {
- var1 = -var6.width;
- }
-
- if (var7.y + var6.height < var4.height) {
- var2 = 0;
- } else {
- var2 = var5.height - var6.height;
- }
- } else {
- if (SwingUtilities.isLeftToRight(this)) {
- if (var7.x + var6.width < var4.width) {
- var1 = 0;
- } else {
- var1 = var5.width - var6.width;
- }
- } else if (var7.x + var5.width < var6.width) {
- var1 = 0;
- } else {
- var1 = var5.width - var6.width;
- }
-
- if (var7.y + var5.height + var6.height < var4.height) {
- var2 = var5.height;
- } else {
- var2 = -var6.height;
- }
- }
-
- return new Point(var1, var2);
- }
-
- public MenuElement[] getSubElements() {
- if (this.popupMenu == null) {
- return new MenuElement[0];
- } else {
- MenuElement[] var1 = new MenuElement[]{this.popupMenu};
- return var1;
- }
- }
-
- public String getUIClassID() {
- return "MenuUI";
- }
-
- public void insert(String var1, int var2) {
- if (var2 < 0) {
- throw new IllegalArgumentException("index less than zero.");
- } else {
- this.ensurePopupMenuCreated();
- this.popupMenu.insert(new JMenuItem(var1), var2);
- }
- }
-
- public JMenuItem insert(Action var1, int var2) {
- if (var2 < 0) {
- throw new IllegalArgumentException("index less than zero.");
- } else {
- this.ensurePopupMenuCreated();
- JMenuItem var3 = new JMenuItem((String)var1.getValue("Name"), (Icon)var1.getValue("SmallIcon"));
- ((AbstractButton)var3).setHorizontalTextPosition(4);
- ((AbstractButton)var3).setVerticalTextPosition(0);
- var3.setEnabled(var1.isEnabled());
- ((AbstractButton)var3).addActionListener(var1);
- this.popupMenu.insert(var3, var2);
- this.registerMenuItemForAction(var3, var1);
- return var3;
- }
- }
-
- public JMenuItem insert(JMenuItem var1, int var2) {
- if (var2 < 0) {
- throw new IllegalArgumentException("index less than zero.");
- } else {
- AccessibleContext var3 = var1.getAccessibleContext();
- var3.setAccessibleParent(this);
- this.ensurePopupMenuCreated();
- this.popupMenu.insert(var1, var2);
- return var1;
- }
- }
-
- public void insertSeparator(int var1) {
- if (var1 < 0) {
- throw new IllegalArgumentException("index less than zero.");
- } else {
- this.ensurePopupMenuCreated();
- this.popupMenu.insert(new JPopupMenu.Separator(), var1);
- }
- }
-
- public boolean isMenuComponent(Component var1) {
- if (var1 == this) {
- return true;
- } else {
- if (var1 instanceof JPopupMenu) {
- JPopupMenu var2 = (JPopupMenu)var1;
- if (var2 == this.getPopupMenu()) {
- return true;
- }
- }
-
- int var7 = this.getMenuComponentCount();
- Component[] var3 = this.getMenuComponents();
-
- for(int var4 = 0; var4 < var7; ++var4) {
- Component var5 = var3[var4];
- if (var5 == var1) {
- return true;
- }
-
- if (var5 instanceof JMenu) {
- JMenu var6 = (JMenu)var5;
- if (var6.isMenuComponent(var1)) {
- return true;
- }
- }
- }
-
- return false;
- }
- }
-
- public boolean isPopupMenuVisible() {
- this.ensurePopupMenuCreated();
- return this.popupMenu.isVisible();
- }
-
- public boolean isSelected() {
- return ((AbstractButton)this).getModel().isSelected();
- }
-
- public boolean isTearOff() {
- throw new Error("boolean isTearOff() {} not yet implemented");
- }
-
- public boolean isTopLevelMenu() {
- return ((Component)this).getParent() instanceof JMenuBar;
- }
-
- public void menuSelectionChanged(boolean var1) {
- this.setSelected(var1);
- }
-
- protected String paramString() {
- return super.paramString();
- }
-
- protected void processKeyEvent(KeyEvent var1) {
- MenuSelectionManager.defaultManager().processKeyEvent(var1);
- if (!((InputEvent)var1).isConsumed()) {
- if (this.isSelected() && (var1.getKeyCode() == 9 || var1.getKeyChar() == '\t')) {
- if ((Boolean)UIManager.get("Menu.consumesTabs") == Boolean.TRUE) {
- ((InputEvent)var1).consume();
- return;
- }
-
- MenuSelectionManager.defaultManager().clearSelectedPath();
- }
-
- super.processKeyEvent(var1);
- }
- }
-
- private void registerMenuItemForAction(JMenuItem var1, Action var2) {
- PropertyChangeListener var3 = this.createActionChangeListener(var1);
- if (listenerRegistry == null) {
- listenerRegistry = new Hashtable();
- }
-
- listenerRegistry.put(var1, var3);
- listenerRegistry.put(var3, var2);
- var2.addPropertyChangeListener(var3);
- }
-
- public void remove(int var1) {
- if (var1 < 0) {
- throw new IllegalArgumentException("index less than zero.");
- } else if (var1 > this.getItemCount()) {
- throw new IllegalArgumentException("index greater than the number of items.");
- } else {
- JMenuItem var2 = this.getItem(var1);
- if (var2 instanceof JMenuItem) {
- this.unregisterMenuItemForAction(var2);
- }
-
- if (this.popupMenu != null) {
- this.popupMenu.remove(var1);
- }
-
- }
- }
-
- public void remove(Component var1) {
- if (this.popupMenu != null) {
- this.popupMenu.remove(var1);
- }
-
- }
-
- public void remove(JMenuItem var1) {
- if (this.popupMenu != null) {
- this.popupMenu.remove(var1);
- }
-
- this.unregisterMenuItemForAction(var1);
- }
-
- public void removeAll() {
- if (this.popupMenu != null) {
- this.popupMenu.removeAll();
- }
-
- this.clearListenerRegistry();
- }
-
- public void removeMenuListener(MenuListener var1) {
- super.listenerList.remove(class$javax$swing$event$MenuListener != null ? class$javax$swing$event$MenuListener : (class$javax$swing$event$MenuListener = class$("javax.swing.event.MenuListener")), var1);
- }
-
- public void setAccelerator(KeyStroke var1) {
- throw new Error("setAccelerator() is not defined for JMenu. Use setMnemonic() instead.");
- }
-
- public void setDelay(int var1) {
- if (var1 < 0) {
- throw new IllegalArgumentException("Delay must be a positive integer");
- } else {
- this.delay = var1;
- }
- }
-
- public void setMenuLocation(int var1, int var2) {
- if (this.popupMenu != null) {
- this.popupMenu.setLocation(var1, var2);
- }
-
- }
-
- public void setModel(ButtonModel var1) {
- ButtonModel var2 = ((AbstractButton)this).getModel();
- super.setModel(var1);
- if (var2 != null && this.menuChangeListener != null) {
- var2.removeChangeListener(this.menuChangeListener);
- this.menuChangeListener = null;
- }
-
- super.model = var1;
- if (var1 != null) {
- this.menuChangeListener = this.createMenuChangeListener();
- var1.addChangeListener(this.menuChangeListener);
- }
-
- }
-
- public void setPopupMenuVisible(boolean var1) {
- if (((Component)this).isEnabled()) {
- boolean var2 = this.isPopupMenuVisible();
- if (var1 != var2) {
- this.ensurePopupMenuCreated();
- if (var1 && ((Component)this).isShowing()) {
- Point var3 = this.getPopupMenuOrigin();
- this.getPopupMenu().show(this, var3.x, var3.y);
- } else {
- this.getPopupMenu().setVisible(false);
- }
- }
-
- }
- }
-
- public void setSelected(boolean var1) {
- ButtonModel var2 = ((AbstractButton)this).getModel();
- boolean var3 = var2.isSelected();
- if (super.accessibleContext != null && var3 != var1) {
- if (var1) {
- super.accessibleContext.firePropertyChange("AccessibleState", (Object)null, AccessibleState.SELECTED);
- } else {
- super.accessibleContext.firePropertyChange("AccessibleState", AccessibleState.SELECTED, (Object)null);
- }
- }
-
- if (var1 != var2.isSelected()) {
- ((AbstractButton)this).getModel().setSelected(var1);
- }
-
- }
-
- private Point translateToPopupMenu(int var1, int var2) {
- int var3;
- int var4;
- if (((Component)this).getParent() instanceof JPopupMenu) {
- var3 = var1 - ((Component)this).getSize().width;
- var4 = var2;
- } else {
- var3 = var1;
- var4 = var2 - ((Component)this).getSize().height;
- }
-
- return new Point(var3, var4);
- }
-
- private Point translateToPopupMenu(Point var1) {
- return this.translateToPopupMenu(var1.x, var1.y);
- }
-
- private void unregisterMenuItemForAction(JMenuItem var1) {
- if (listenerRegistry != null) {
- ActionChangedListener var2 = (ActionChangedListener)listenerRegistry.remove(var1);
- if (var2 != null) {
- Action var3 = (Action)listenerRegistry.remove(var2);
- if (var3 != null) {
- ((AbstractButton)var1).removeActionListener(var3);
- var3.removePropertyChangeListener(var2);
- }
-
- var2.setTarget((JMenuItem)null);
- }
- }
-
- }
-
- public void updateUI() {
- ((JMenuItem)this).setUI((MenuItemUI)UIManager.getUI(this));
- if (this.popupMenu != null) {
- this.popupMenu.setUI((PopupMenuUI)UIManager.getUI(this.popupMenu));
- }
-
- }
-
- private void writeObject(ObjectOutputStream var1) throws IOException {
- var1.defaultWriteObject();
- if (super.ui != null && this.getUIClassID().equals("MenuUI")) {
- super.ui.installUI(this);
- }
-
- }
- }
-